package com.bsoft.gol.hcs.specialist.bean.response;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.bsoft.gol.hcs.specialist.bean.request.FollowUpRouteDetailRecommendDeptReq;
import com.bsoft.gol.hcs.specialist.entity.*;

import java.util.Date;
import java.util.List;

public class QueryPlanListResponse {

    private String patientId;
    private String cardType;
    private String cardNumber;
    private String patientName;
    private String patientSex;
    private Integer patientAge;
    private String telephone;
    private List<dateGroup> dateGroupList;

    public List<dateGroup> getDateGroupList() {
        return dateGroupList;
    }

    public void setDateGroupList(List<dateGroup> dateGroupList) {
        this.dateGroupList = dateGroupList;
    }

    public String getPatientId() {
        return patientId;
    }

    public void setPatientId(String patientId) {
        this.patientId = patientId;
    }

    public String getCardType() {
        return cardType;
    }

    public void setCardType(String cardType) {
        this.cardType = cardType;
    }

    public String getCardNumber() {
        return cardNumber;
    }

    public void setCardNumber(String cardNumber) {
        this.cardNumber = cardNumber;
    }

    public String getPatientName() {
        return patientName;
    }

    public void setPatientName(String patientName) {
        this.patientName = patientName;
    }

    public String getPatientSex() {
        return patientSex;
    }

    public void setPatientSex(String patientSex) {
        this.patientSex = patientSex;
    }

    public Integer getPatientAge() {
        return patientAge;
    }

    public void setPatientAge(Integer patientAge) {
        this.patientAge = patientAge;
    }

    public String getTelephone() {
        return telephone;
    }

    public void setTelephone(String telephone) {
        this.telephone = telephone;
    }

    public static class dateGroup {
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh_CN", timezone = "GMT+8")
        private Date planDate;
        private List<FollowUpDatePlan> followUpDatePlanList;
        private List<FusAfterDatePlan> fusAfterDatePlanList;

        public List<FusAfterDatePlan> getFusAfterDatePlanList() {
            return fusAfterDatePlanList;
        }

        public void setFusAfterDatePlanList(List<FusAfterDatePlan> fusAfterDatePlanList) {
            this.fusAfterDatePlanList = fusAfterDatePlanList;
        }

        public Date getPlanDate() {
            return planDate;
        }

        public void setPlanDate(Date planDate) {
            this.planDate = planDate;
        }

        public List<FollowUpDatePlan> getFollowUpDatePlanList() {
            return followUpDatePlanList;
        }

        public void setFollowUpDatePlanList(List<FollowUpDatePlan> followUpDatePlanList) {
            this.followUpDatePlanList = followUpDatePlanList;
        }
    }

    public static class FollowUpDatePlan {
        private long recordId;
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh_CN", timezone = "GMT+8")
        private Date planTime;
        private Byte routeDetailType;
        private String userInfoId;
        private Long routeDetailId;
        private Long routeId;
        private String deptId;
        private String departmentId;
        private String departmentName;
        private String medicalRecordId;//随访病历id，随访病历设置获取(又称问卷Id)
        private String medicalRecordName;//随访病历名称，随访病历设置获取(又称问卷Id)
        private List<InnerMedicalRecord> questionnaireList;
        private  String followUpStatus;//随访状态：0未随访 1 已随访 9 已终止
        private  String orgId;//机构id
        private  String organizationId;//机构编码
        private  String organizationName;//机构名称
        private List<FollowUpRecordsContent> followUpPlanList;
        //推荐科室列表
        private  List<FollowUpRouteDetailRecommendDeptReq> recommendDept;
        /**
         * 1 表单 2 推荐科室 3 健康宣教 4 健康监测 列表
         */
        private List<FollowUpRouteDetailForm> followUpRouteDetailForms;

        public long getRecordId() {
            return recordId;
        }

        public void setRecordId(long recordId) {
            this.recordId = recordId;
        }

        public Date getPlanTime() {
            return planTime;
        }

        public void setPlanTime(Date planTime) {
            this.planTime = planTime;
        }

        public Byte getRouteDetailType() {
            return routeDetailType;
        }

        public void setRouteDetailType(Byte routeDetailType) {
            this.routeDetailType = routeDetailType;
        }

        public String getUserInfoId() {
            return userInfoId;
        }

        public void setUserInfoId(String userInfoId) {
            this.userInfoId = userInfoId;
        }

        public Long getRouteDetailId() {
            return routeDetailId;
        }

        public void setRouteDetailId(Long routeDetailId) {
            this.routeDetailId = routeDetailId;
        }

        public Long getRouteId() {
            return routeId;
        }

        public void setRouteId(Long routeId) {
            this.routeId = routeId;
        }

        public String getDeptId() {
            return deptId;
        }

        public void setDeptId(String deptId) {
            this.deptId = deptId;
        }

        public String getDepartmentId() {
            return departmentId;
        }

        public void setDepartmentId(String departmentId) {
            this.departmentId = departmentId;
        }

        public String getDepartmentName() {
            return departmentName;
        }

        public void setDepartmentName(String departmentName) {
            this.departmentName = departmentName;
        }

        public String getMedicalRecordId() {
            return medicalRecordId;
        }

        public void setMedicalRecordId(String medicalRecordId) {
            this.medicalRecordId = medicalRecordId;
        }

        public String getMedicalRecordName() {
            return medicalRecordName;
        }

        public void setMedicalRecordName(String medicalRecordName) {
            this.medicalRecordName = medicalRecordName;
        }

        public String getFollowUpStatus() {
            return followUpStatus;
        }

        public void setFollowUpStatus(String followUpStatus) {
            this.followUpStatus = followUpStatus;
        }

        public String getOrgId() {
            return orgId;
        }

        public void setOrgId(String orgId) {
            this.orgId = orgId;
        }

        public String getOrganizationId() {
            return organizationId;
        }

        public void setOrganizationId(String organizationId) {
            this.organizationId = organizationId;
        }

        public String getOrganizationName() {
            return organizationName;
        }

        public void setOrganizationName(String organizationName) {
            this.organizationName = organizationName;
        }

        public List<FollowUpRecordsContent> getFollowUpPlanList() {
            return followUpPlanList;
        }

        public void setFollowUpPlanList(List<FollowUpRecordsContent> followUpPlanList) {
            this.followUpPlanList = followUpPlanList;
        }

        public List<FollowUpRouteDetailForm> getFollowUpRouteDetailForms() {
            return followUpRouteDetailForms;
        }

        public void setFollowUpRouteDetailForms(List<FollowUpRouteDetailForm> followUpRouteDetailForms) {
            this.followUpRouteDetailForms = followUpRouteDetailForms;
        }

        public List<InnerMedicalRecord> getQuestionnaireList() {
            return questionnaireList;
        }

        public void setQuestionnaireList(List<InnerMedicalRecord> questionnaireList) {
            this.questionnaireList = questionnaireList;
        }

        public List<FollowUpRouteDetailRecommendDeptReq> getRecommendDept() {
            return recommendDept;
        }

        public void setRecommendDept(List<FollowUpRouteDetailRecommendDeptReq> recommendDept) {
            this.recommendDept = recommendDept;
        }
    }

    public static class FusAfterDatePlan {
        private String recordId;
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh_CN", timezone = "GMT+8")
        private Date planTime;
        private Byte routeDetailType;
        private Long routeDetailId;
        private Long routeId;
        private String deptId;
        private String departmentId;
        private String departmentName;
        private  String followUpStatus;//随访状态：0未随访 1 已随访 9 已终止
        private  String orgId;//机构id
        private  String organizationId;//机构编码
        private  String organizationName;//机构名称

        //推荐科室列表
        private  List<FusAfterRecommendDept> recommendDept;
        //门诊复诊
        private List<FusAfterHosRecordContent> fusAfterHosRecordContentList;
        //随访表单
        private List<FusAfterRequisitionRecord> questionnaireList;
        //健康宣教
        private List<FusAfterHealthEducation> fusAfterHealthEducationList;

        private List<FusAfterRecordsContentResp> followUpPlanList;


        public List<FusAfterRecordsContentResp> getFollowUpPlanList() {
            return followUpPlanList;
        }

        public void setFollowUpPlanList(List<FusAfterRecordsContentResp> followUpPlanList) {
            this.followUpPlanList = followUpPlanList;
        }

        public String getRecordId() {
            return recordId;
        }

        public void setRecordId(String recordId) {
            this.recordId = recordId;
        }

        public Date getPlanTime() {
            return planTime;
        }

        public void setPlanTime(Date planTime) {
            this.planTime = planTime;
        }

        public Byte getRouteDetailType() {
            return routeDetailType;
        }

        public void setRouteDetailType(Byte routeDetailType) {
            this.routeDetailType = routeDetailType;
        }

        public Long getRouteDetailId() {
            return routeDetailId;
        }

        public void setRouteDetailId(Long routeDetailId) {
            this.routeDetailId = routeDetailId;
        }

        public Long getRouteId() {
            return routeId;
        }

        public void setRouteId(Long routeId) {
            this.routeId = routeId;
        }

        public String getDeptId() {
            return deptId;
        }

        public void setDeptId(String deptId) {
            this.deptId = deptId;
        }

        public String getDepartmentId() {
            return departmentId;
        }

        public void setDepartmentId(String departmentId) {
            this.departmentId = departmentId;
        }

        public String getDepartmentName() {
            return departmentName;
        }

        public void setDepartmentName(String departmentName) {
            this.departmentName = departmentName;
        }

        public String getFollowUpStatus() {
            return followUpStatus;
        }

        public void setFollowUpStatus(String followUpStatus) {
            this.followUpStatus = followUpStatus;
        }

        public String getOrgId() {
            return orgId;
        }

        public void setOrgId(String orgId) {
            this.orgId = orgId;
        }

        public String getOrganizationId() {
            return organizationId;
        }

        public void setOrganizationId(String organizationId) {
            this.organizationId = organizationId;
        }

        public String getOrganizationName() {
            return organizationName;
        }

        public void setOrganizationName(String organizationName) {
            this.organizationName = organizationName;
        }

        public List<FusAfterRecommendDept> getRecommendDept() {
            return recommendDept;
        }

        public void setRecommendDept(List<FusAfterRecommendDept> recommendDept) {
            this.recommendDept = recommendDept;
        }

        public List<FusAfterHosRecordContent> getFusAfterHosRecordContentList() {
            return fusAfterHosRecordContentList;
        }

        public void setFusAfterHosRecordContentList(List<FusAfterHosRecordContent> fusAfterHosRecordContentList) {
            this.fusAfterHosRecordContentList = fusAfterHosRecordContentList;
        }

        public List<FusAfterRequisitionRecord> getQuestionnaireList() {
            return questionnaireList;
        }

        public void setQuestionnaireList(List<FusAfterRequisitionRecord> questionnaireList) {
            this.questionnaireList = questionnaireList;
        }

        public List<FusAfterHealthEducation> getFusAfterHealthEducationList() {
            return fusAfterHealthEducationList;
        }

        public void setFusAfterHealthEducationList(List<FusAfterHealthEducation> fusAfterHealthEducationList) {
            this.fusAfterHealthEducationList = fusAfterHealthEducationList;
        }
    }

    public static class InnerMedicalRecord {
        private String questionnaireId;
        private String questionnaireName;
        private String userInfoId;
        private String formId;

        @Override
        public String toString() {
            return "InnerMedicalRecord{" +
                    "questionnaireId='" + questionnaireId + '\'' +
                    ", questionnaireName='" + questionnaireName + '\'' +
                    ", userInfoId='" + userInfoId + '\'' +
                    ", formId='" + formId + '\'' +
                    '}';
        }

        public String getFormId() {
            return formId;
        }

        public void setFormId(String formId) {
            this.formId = formId;
        }

        public String getQuestionnaireId() {
            return questionnaireId;
        }

        public void setQuestionnaireId(String questionnaireId) {
            this.questionnaireId = questionnaireId;
        }

        public String getQuestionnaireName() {
            return questionnaireName;
        }

        public void setQuestionnaireName(String questionnaireName) {
            this.questionnaireName = questionnaireName;
        }

        public String getUserInfoId() {
            return userInfoId;
        }

        public void setUserInfoId(String userInfoId) {
            this.userInfoId = userInfoId;
        }
    }
}